using System;
using System.Data;
using System.Windows.Forms;
using Company.BLL;

using Company.BLL.DuLieuChuan;
using Janus.Windows.GridEX;
using Company.BLL.KDT.GC;
using Company.BLL.KDT;


namespace Company.Interface.KDT.GC
{
    public partial class DinhMucGCManageForm : BaseForm
    {        
        public bool IsBrowseForm = false;
        private Company.BLL.KDT.GC.DinhMucDangKy dmdkSelect;
        private Company.BLL.KDT.GC.HopDong hopdong = new HopDong();
        private DinhMucDangKyCollection dmdkCollection = new DinhMucDangKyCollection();
        public DinhMucGCManageForm()
        {
            InitializeComponent();
        }

        public void BindData()
        {
            string where = string.Format("MaDoanhNghiep = '{0}' ", GlobalSettings.MA_DON_VI);
            if (ctrDonViHaiQuan.Ma != "")
                where += string.Format(" and mahaiquan = '{0}' ", ctrDonViHaiQuan.Ma);           
            dgList.DataSource = HopDong.SelectCollectionDynamic(where, "");
        }

        //-----------------------------------------------------------------------------------------
        
        private void khoitao_DuLieuChuan()
        {
            // Đơn vị tính.
            this._DonViTinh = DonViTinh.SelectAll();           
        }

        //-----------------------------------------------------------------------------------------

        private void DinhMucGCManageForm_Load(object sender, EventArgs e)
        {
            this.khoitao_DuLieuChuan();
            //BindData();
            BindHopDong();
            btnSearch_Click(null, null);
        }

        //-----------------------------------------------------------------------------------------
        
        private void btnGetListFromHQ_Click(object sender, EventArgs e)
        {
            //this.dsRegistedList = new HopDong().WS_GetDanhSachDaDangKy(ctrDonViHaiQuan.Ma, GlobalSettings.MA_DON_VI);
            //dgList.DataSource = this.dsRegistedList.Tables[0];
            //// Cập nhật vào CSDL.
            //bool ret = new HopDong().UpdateRegistedToDatabase(ctrDonViHaiQuan.Ma, GlobalSettings.MA_DON_VI, this.dsRegistedList);
            //bool retNPL = new NguyenPhuLieu().UpdateRegistedToDatabase(ctrDonViHaiQuan.Ma, GlobalSettings.MA_DON_VI);
            //bool retSP = new SanPham().UpdateRegistedToDatabase(ctrDonViHaiQuan.Ma, GlobalSettings.MA_DON_VI);
            //bool retPK = new PhuKien().UpdateRegistedToDatabase(ctrDonViHaiQuan.Ma, GlobalSettings.MA_DON_VI);
            
            //if (ret && retNPL & retSP & retPK)
            //{
            //    MessageBox.Show("Cập nhật thành công");
            //}

        }

        //-----------------------------------------------------------------------------------------
        
        private void dgList_RowDoubleClick(object sender, RowActionEventArgs e)
        {          
            hopdong =HopDong.Load(e.Row.Cells[3].Text);                      
            long ID=(long)Convert.ToInt64(e.Row.Cells[4].Text);
           
            Form[] forms = this.ParentForm.MdiChildren;
            for (int i = 0; i < forms.Length; i++)
            {
                if (forms[i].Name.ToString().Equals("DM"+ID.ToString()))
                {
                    forms[i].Activate();
                    return;
                }
            }
            DinhMucDangKy dmdk = DinhMucDangKy.Load(ID);
            #region code dm
            //Company.BLL.KDT.GC.DinhMucCollection dmcol = Company.BLL.KDT.GC.DinhMuc.SelectCollectionBy_Master_ID(ID);
            //Company.BLL.GC.DinhMucCollection dmCollection = new Company.BLL.GC.DinhMucCollection();
            //foreach(Company.BLL.KDT.GC.DinhMuc dm in dmcol)
            //{
            //    Company.BLL.GC.DinhMuc d = new Company.BLL.GC.DinhMuc();
            //    d.TrangThaiXuLy = TrangThaiXuLy.DA_DUYET;
            //    d.SoHopDong = dmdk.SoHopDong;
            //    d.NgayKy = dmdk.NgayKy;
            //    d.MaHaiQuan = dmdk.MaHaiQuan;
            //    d.MaDoanhNghiep = dmdk.MaDoanhNghiep;
            //    d.MaNguyenPhuLieu = dm.MaNguyenPhuLieu;
            //    d.MaSanPham = dm.MaSanPham;
            //    d.NPL_TuCungUng = dm.NPL_TuCungUng;
            //    d.TyLeHaoHut = dm.TyLeHaoHut;
            //    d.GhiChu = dm.GhiChu;
            //    d.DinhMucSuDung = dm.DinhMucSuDung;
            //    dmCollection.Add(d);                
            //}
            //if (dmCollection.Count > 0)
            //{
            //    Company.BLL.GC.DinhMuc d = new Company.BLL.GC.DinhMuc();
            //    d.Insert(dmCollection);
            //}
            #endregion code dm
            DinhMucGCSendForm f = new DinhMucGCSendForm();
            f.dmDangKy = dmdk;
            f.hopdong = hopdong;
            f.Name = "DM"+ID.ToString();
            f.MdiParent = this.ParentForm;
            f.Show();
        }
        private void BindHopDong()
        {
            string maHQ = ctrDonViHaiQuan.Ma;
            HopDong hd=new HopDong();
            hd.SoHopDong="";
            hd.ID=0;            
            HopDongCollection collection;   
            {
                string where = string.Format("[MaHaiQuan] LIKE '%{0}%'", maHQ);
                collection = HopDong.SelectCollectionDynamic(where, "");
            }            
            collection.Add(hd);          
            cbHopDong.DataSource = collection;
            cbHopDong.DisplayMember = "SoHopDong";
            cbHopDong.ValueMember = "ID";
            cbHopDong.SelectedIndex = collection.Count - 1;
        }
        private void ctrDonViHaiQuan_ValueChanged(object sender, EventArgs e)
        {
            //this.BindData();
            BindHopDong();
            cbHopDong.Text = "";
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void dgList_LoadingRow(object sender, RowLoadEventArgs e)
        {
            if (e.Row.RowType == RowType.Record)
            {
                if (e.Row.Cells["NgayTiepNhan"].Value != DBNull.Value)
                {
                    if (Convert.ToDateTime(e.Row.Cells["NgayTiepNhan"].Value).Year == 1900)
                    {
                        e.Row.Cells["NgayTiepNhan"].Text = "";
                    }
                }
                if (Convert.ToInt64(e.Row.Cells[5].Text) == TrangThaiXuLy.DA_DUYET)
                    e.Row.Cells[5].Text = "Đã duyệt";
                else if (Convert.ToInt64(e.Row.Cells[5].Text) == TrangThaiXuLy.CHUA_KHAI_BAO)
                    e.Row.Cells[5].Text = "Chưa khai báo";
                else if (Convert.ToInt64(e.Row.Cells[5].Text) == TrangThaiXuLy.CHO_DUYET)
                    e.Row.Cells[5].Text = "Chờ duyệt";
                e.Row.Cells[3].Text = HopDong.Load((long)Convert.ToInt64(e.Row.Cells[3].Value)).SoHopDong;
            }
        }

        private void btnSearch_Click(object sender, EventArgs e)
        {
            dgList.RootTable.Columns[6].Visible = false;
            string where = "1=1";
            if (txtSoTiepNhan.Text.Trim().Length > 0)
            {
                where += " and sotiepnhan=" + txtSoTiepNhan.Text;
            }
            if (cbHopDong.Text.Length > 0)
            {
                where += " and id_HopDong=" + cbHopDong.Value.ToString();
            }
           
            if (txtNamTiepNhan.Text.Trim().Length > 0)
            {
                where += " and year(ngaytiepnhan)=" + txtNamTiepNhan.Text;
            }
            if (cbStatus.Text.Length > 0)
                where += " and TrangThaiXuLy=" + cbStatus.SelectedValue.ToString();
            dmdkCollection = Company.BLL.KDT.GC.DinhMucDangKy.SelectCollectionDynamic(where, "");
            dgList.DataSource = dmdkCollection;
        }

        private void dgList_DeletingRecord(object sender, RowActionCancelEventArgs e)
        {
            long ID = (long)Convert.ToInt64(e.Row.Cells[4].Text);
            DinhMucDangKy dmdk = DinhMucDangKy.Load(ID);
            if (dmdk.TrangThaiXuLy == TrangThaiXuLy.DA_DUYET)
            {
                ShowMessage("Định mức đã duyệt chính thức. Không được xóa", false);
                e.Cancel = true;
                return;
            }
            if (dmdk.TrangThaiXuLy == TrangThaiXuLy.CHO_DUYET)
            {
                ShowMessage("Định mức đã gửi tới hải quan. Không được xóa", false);
                e.Cancel = true;
                return;
            }
            if (e.Row.RowType == RowType.Record)
            {
                if (ShowMessage("Bạn có muốn xóa định mức này không?", true) == "Yes")
                {
                    if (dmdk.ID > 0)
                    {
                        dmdk.Delete();
                    }
                }
                else
                {
                    e.Cancel = true;
                }
            }
        }

        private void cbStatus_SelectedIndexChanged(object sender, EventArgs e)
        {            
            if (cbStatus.SelectedValue.ToString() == "-1")
            {
                Huy1.Enabled = Janus.Windows.UI.InheritableBoolean.False;
                NhanDuLieu1.Enabled = Janus.Windows.UI.InheritableBoolean.False;
                HuyCTMenu.Enabled = false;
                NhanDuLieuCTMenu.Enabled = false;
                khaibaoCTMenu.Enabled = true;
                KhaiBao1.Enabled = Janus.Windows.UI.InheritableBoolean.True;
                txtNamTiepNhan.Text = "";
                txtSoTiepNhan.Text = "";
            }
            else if (cbStatus.SelectedValue.ToString() == "0")
            {
                Huy1.Enabled = Janus.Windows.UI.InheritableBoolean.True;
                NhanDuLieu1.Enabled = Janus.Windows.UI.InheritableBoolean.True;
                HuyCTMenu.Enabled = true;
                NhanDuLieuCTMenu.Enabled = true;
                khaibaoCTMenu.Enabled = true;
                KhaiBao1.Enabled = Janus.Windows.UI.InheritableBoolean.True;
            }
            else
            {
                Huy1.Enabled = Janus.Windows.UI.InheritableBoolean.False;
                NhanDuLieu1.Enabled = Janus.Windows.UI.InheritableBoolean.False;
                HuyCTMenu.Enabled = false;
                NhanDuLieuCTMenu.Enabled = false;
                khaibaoCTMenu.Enabled = false;
                KhaiBao1.Enabled = Janus.Windows.UI.InheritableBoolean.False;
            }
        }

        private void cmMain_CommandClick(object sender, Janus.Windows.UI.CommandBars.CommandEventArgs e)
        {
            switch (e.Command.Key)
            {
                case "KhaiBao": khaibaoHD(); break;
                case "NhanDuLieu": nhandulieuHD(); break;
                case "Huy": HuyNhieuHD(); break;
            }
        }
        private void nhandulieuHD()
        {
            try
            {
                if (dgList.GetRow() != null)
                {
                    dmdkSelect = (DinhMucDangKy)dgList.GetRow().DataRow;
                    WSForm wsForm = new WSForm();
                    wsForm.ShowDialog(this);
                    if (!wsForm.IsReady) return;
                    try
                    {
                        this.Cursor = Cursors.WaitCursor;
                        dmdkSelect.WSRequest();
                        Huy1.Enabled = Janus.Windows.UI.InheritableBoolean.True; ;
                        HuyCTMenu.Enabled = false;
                        this.Cursor = Cursors.Default;
                        ShowMessage("Đã nhận dữ liệu thành công.", false);
                        btnSearch_Click(null, null);
                    }
                    catch (Exception ex)
                    {
                        this.Cursor = Cursors.Default;
                        if (ex.Message == "1")
                            ShowMessage("Hợp đồng này đã được duyệt chính thức trên hải quan", false);
                        else
                            throw ex;
                    }
                }
            }
            catch (Exception Ex)
            {
                if (ShowMessage("Nhận dữ liệu định mức không thành công.\nLỗi: " + Ex.Message + ".\nBạn có muốn đưa vào hàng đợi không?", true) == "Yes")
                {
                    HangDoi hd = new HangDoi();
                    hd.ID = dmdkSelect.ID;
                    hd.LoaiToKhai = LoaiToKhai.DINH_MUC_HOP_DONG;
                    hd.TrangThai = dmdkSelect.TrangThaiXuLy;
                    hd.ChucNang = ChucNang.NHAN_THONG_TIN;
                    MainForm.AddToQueueForm(hd);
                    MainForm.ShowQueueForm();
                }
            }
        }

        private void khaibaoHD()
        {
            try
            {
                if (dgList.GetRow() != null)
                {
                    dmdkSelect = (DinhMucDangKy)dgList.GetRow().DataRow;
                    WSForm wsForm = new WSForm();
                    wsForm.ShowDialog(this);
                    if (!wsForm.IsReady) return;
                    try
                    {
                        this.Cursor = Cursors.WaitCursor;
                        dmdkSelect = DinhMucDangKy.Load(dmdkSelect.ID);
                        dmdkSelect.WSSend();
                        Huy1.Enabled = Janus.Windows.UI.InheritableBoolean.True;
                        HuyCTMenu.Enabled = true;
                        this.Cursor = Cursors.Default;
                        ShowMessage("Đã gửi thành công. Số tiếp nhận của bạn là " + dmdkSelect.SoTiepNhan.ToString(), false);
                        btnSearch_Click(null, null);
                    }
                    catch (Exception ex)
                    {
                        this.Cursor = Cursors.Default;
                        if (ex.Message == "1")
                            ShowMessage("Định mức này đã được duyệt chính thức trên hải quan", false);
                        else
                            throw ex;
                    }
                }
            }
            catch (Exception Ex)
            {
                if (ShowMessage("Khai báo không thành công.\nLỗi: " + Ex.Message + ".\nBạn có muốn đưa vào hàng đợi không?", true) == "Yes")
                {
                    HangDoi hd = new HangDoi();
                    hd.ID = dmdkSelect.ID;
                    hd.LoaiToKhai = LoaiToKhai.DINH_MUC_HOP_DONG;
                    hd.TrangThai = dmdkSelect.TrangThaiXuLy;
                    hd.ChucNang = ChucNang.KHAI_BAO;
                    MainForm.AddToQueueForm(hd);
                    MainForm.ShowQueueForm();
                }
            }
        }

        private void HuyNhieuHD()
        {
            try
            {
                if (dgList.GetRow() != null)
                {
                    dmdkSelect = (DinhMucDangKy)dgList.GetRow().DataRow;
                    WSForm wsForm = new WSForm();
                    wsForm.ShowDialog(this);
                    if (!wsForm.IsReady) return;
                    try
                    {
                        this.Cursor = Cursors.WaitCursor;
                        dmdkSelect = DinhMucDangKy.Load(dmdkSelect.ID);
                        dmdkSelect.WSCancel();
                        Huy1.Enabled = Janus.Windows.UI.InheritableBoolean.False; ;
                        HuyCTMenu.Enabled = false;
                        this.Cursor = Cursors.Default;
                        ShowMessage("Đã hủy thành công.", false);
                        btnSearch_Click(null, null);
                    }
                    catch (Exception ex)
                    {
                        this.Cursor = Cursors.Default;
                        if (ex.Message == "1")
                            ShowMessage("Định mức này đã được duyệt chính thức trên hải quan", false);
                        else
                            throw ex;
                    }
                }
            }
            catch (Exception Ex)
            {
                if (ShowMessage("Hủy định mức không thành công.\nLỗi: " + Ex.Message + ".\nBạn có muốn đưa vào hàng đợi không?", true) == "Yes")
                {
                    HangDoi hd = new HangDoi();
                    hd.ID = dmdkSelect.ID;
                    hd.LoaiToKhai = LoaiToKhai.DINH_MUC_HOP_DONG;
                    hd.TrangThai = dmdkSelect.TrangThaiXuLy;
                    hd.ChucNang = ChucNang.HUY_KHAI_BAO;
                    MainForm.AddToQueueForm(hd);
                    MainForm.ShowQueueForm();
                }
            }
        }

        private void khaibaoCTMenu_Click(object sender, EventArgs e)
        {
            try
            {
                if (dgList.GetRow() != null)
                {
                    dmdkSelect = (DinhMucDangKy)dgList.GetRow().DataRow;
                    WSForm wsForm = new WSForm();
                    wsForm.ShowDialog(this);
                    if (!wsForm.IsReady) return;
                    try
                    {
                        this.Cursor = Cursors.WaitCursor;
                        dmdkSelect = DinhMucDangKy.Load(dmdkSelect.ID);
                        dmdkSelect.WSSend();
                        Huy1.Enabled = Janus.Windows.UI.InheritableBoolean.True;
                        HuyCTMenu.Enabled = true;
                        this.Cursor = Cursors.Default;
                        ShowMessage("Đã gửi thành công. Số tiếp nhận của bạn là " + dmdkSelect.SoTiepNhan.ToString(), false);
                        btnSearch_Click(null, null);
                    }
                    catch (Exception ex)
                    {
                        this.Cursor = Cursors.Default;
                        if (ex.Message == "1")
                            ShowMessage("Định mức này đã được duyệt chính thức trên hải quan", false);
                        else
                            throw ex;
                    }
                }
            }
            catch (Exception Ex)
            {
                if (ShowMessage("Khai báo không thành công.\nLỗi: " + Ex.Message + ".\nBạn có muốn đưa vào hàng đợi không?", true) == "Yes")
                {
                    HangDoi hd = new HangDoi();
                    hd.ID = dmdkSelect.ID;
                    hd.LoaiToKhai = LoaiToKhai.DINH_MUC_HOP_DONG;
                    hd.TrangThai = dmdkSelect.TrangThaiXuLy;
                    hd.ChucNang = ChucNang.KHAI_BAO;
                    MainForm.AddToQueueForm(hd);
                    MainForm.ShowQueueForm();
                }
            }
        }

        private void NhanDuLieuCTMenu_Click(object sender, EventArgs e)
        {
            try
            {
                if (dgList.GetRow() != null)
                {
                    dmdkSelect = (DinhMucDangKy)dgList.GetRow().DataRow;
                    WSForm wsForm = new WSForm();
                    wsForm.ShowDialog(this);
                    if (!wsForm.IsReady) return;
                    try
                    {
                        this.Cursor = Cursors.WaitCursor;
                        dmdkSelect.WSRequest();
                        Huy1.Enabled = Janus.Windows.UI.InheritableBoolean.False; ;
                        HuyCTMenu.Enabled = false;
                        this.Cursor = Cursors.Default;
                        ShowMessage("Đã nhận dữ liệu thành công.", false);
                        btnSearch_Click(null, null);
                    }
                    catch (Exception ex)
                    {
                        this.Cursor = Cursors.Default;
                        if (ex.Message == "1")
                            ShowMessage("Hợp đồng này đã được duyệt chính thức trên hải quan", false);
                        else
                            throw ex;
                    }
                }
            }
            catch (Exception Ex)
            {
                if (ShowMessage("Nhận dữ liệu định mức không thành công.\nLỗi: " + Ex.Message + ".\nBạn có muốn đưa vào hàng đợi không?", true) == "Yes")
                {
                    HangDoi hd = new HangDoi();
                    hd.ID = dmdkSelect.ID;
                    hd.LoaiToKhai = LoaiToKhai.DINH_MUC_HOP_DONG;
                    hd.TrangThai = dmdkSelect.TrangThaiXuLy;
                    hd.ChucNang = ChucNang.NHAN_THONG_TIN;
                    MainForm.AddToQueueForm(hd);
                    MainForm.ShowQueueForm();
                }
            }
        }

        private void HuyCTMenu_Click(object sender, EventArgs e)
        {
            try
            {
                if (dgList.GetRow() != null)
                {
                    dmdkSelect = (DinhMucDangKy)dgList.GetRow().DataRow;
                    WSForm wsForm = new WSForm();
                    wsForm.ShowDialog(this);
                    if (!wsForm.IsReady) return;
                    try
                    {
                        this.Cursor = Cursors.WaitCursor;
                        dmdkSelect = DinhMucDangKy.Load(dmdkSelect.ID);
                        dmdkSelect.WSCancel();
                        Huy1.Enabled = Janus.Windows.UI.InheritableBoolean.False; ;
                        HuyCTMenu.Enabled = false;
                        this.Cursor = Cursors.Default;
                        ShowMessage("Đã hủy thành công.", false);
                        btnSearch_Click(null, null);
                    }
                    catch (Exception ex)
                    {
                        this.Cursor = Cursors.Default;
                        if (ex.Message == "1")
                            ShowMessage("Định mức này đã được duyệt chính thức trên hải quan", false);
                        else
                            throw ex;
                    }
                }
            }
            catch (Exception Ex)
            {
                if (ShowMessage("Hủy định mức không thành công.\nLỗi: " + Ex.Message + ".\nBạn có muốn đưa vào hàng đợi không?", true) == "Yes")
                {
                    HangDoi hd = new HangDoi();
                    hd.ID = dmdkSelect.ID;
                    hd.LoaiToKhai = LoaiToKhai.DINH_MUC_HOP_DONG;
                    hd.TrangThai = dmdkSelect.TrangThaiXuLy;
                    hd.ChucNang = ChucNang.HUY_KHAI_BAO;
                    MainForm.AddToQueueForm(hd);
                    MainForm.ShowQueueForm();
                }
            }
        }

        //-----------------------------------------------------------------------------------------
    }
}
